gtkplacesviewrow: plural form for available space
authorCarlos Soriano <csoriano@gnome.org>
Tue, 15 Dec 2015 14:56:46 +0000 (15:56 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 15 Dec 2015 19:59:13 +0000 (14:59 -0500)
We were not supporting plural form of the available space, which
is a problem in some languages.
However in this case is kind of a difficult matter, since we use a
formatted string from glib with g_format_size.

To fix it, use the same behavior as g_format_size to decide when
it should be used a plural form or not.

https://bugzilla.gnome.org/show_bug.cgi?id=759491

gtk/gtkplacesviewrow.c

index d797c18e8a8178e118333113382b68f6e4ac4bda..a742ff902dc29e692871a4e44e4296be17c858be 100644 (file)
@@ -89,6 +89,7 @@ measure_available_space_finished (GObject      *object,
   gchar *formatted_free_size;
   gchar *formatted_total_size;
   gchar *label;
+  guint plural_form;
 
   error = NULL;
 
@@ -120,8 +121,16 @@ measure_available_space_finished (GObject      *object,
 
   formatted_free_size = g_format_size (free_space);
   formatted_total_size = g_format_size (total_space);
-  /* Translators: respectively, free and total space of the drive */
-  label = g_strdup_printf (_("%s / %s available"), formatted_free_size, formatted_total_size);
+
+  /* read g_format_size code in glib for further understanding */
+  plural_form = free_space < 1000 ? free_space : free_space % 1000 + 1000;
+
+  /* Translators: respectively, free and total space of the drive. The plural form
+   * should be based on the free space available.
+   * i.e. 1 GB / 24 GB available.
+   */
+  label = g_strdup_printf (ngettext ("%s / %s available", "%s / %s available", plural_form),
+                           formatted_free_size, formatted_total_size);
 
   gtk_label_set_label (row->available_space_label, label);